﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Threading;
using DevExpress.Web.ASPxCallback;
using System.ComponentModel;
using System.Data;
using Model;
using System.Configuration;
using DevExpress.Web.ASPxEditors;
using DevExpress.Web.ASPxGridView;
using System.IO;

namespace WebApplication1
{
    public partial class About : System.Web.UI.Page
    {

        #region EntidadesDataTableCache
        private DataTable EntidadesDataTableCache
        {
            get
            {
                DataTable objTable = null;
                if (Cache["Entidades.aspxDataTableCache" + Session.SessionID] != null)
                    objTable = (DataTable)Cache["Entidades.aspxDataTableCache" + Session.SessionID];
                return objTable;
            }
            set
            {
                if (value != null)
                {
                    Cache.Insert("Entidades.aspxDataTableCache" + Session.SessionID, value, null, DateTime.Now.AddMinutes(20), TimeSpan.Zero);
                }
            }
        }
        #endregion

        #region ASPxCallback1_Callback
        protected void ASPxCallback1_Callback(object sender, CallbackEventArgs e)
        {
            int newsID = int.Parse(e.Parameter);


            DataSourceSelectArguments argumentos = new DataSourceSelectArguments();
            DataView dv = (DataView)SqlDataSourceDescripcion.Select(DataSourceSelectArguments.Empty);
            DataTable dt = dv.ToTable();
            foreach (DataRow row in dt.Rows)
            {
                if (row["ENT_ID"].ToString() == newsID.ToString())
                    e.Result = row["ENT_RESENA"].ToString();
            }
        }
        #endregion

        #region Page_Load
        protected void Page_Load(object sender, EventArgs e)
        {



            if (!IsPostBack)
            {
                DirectoryInfo myImageDir = new DirectoryInfo(MapPath("~/images/fullscreen/"));
                foreach (FileInfo item in myImageDir.GetFiles())
                {

                }



                try
                {
                    galleryDataList.DataSource = myImageDir.GetFiles();
                    galleryDataList.DataBind();
                }
                catch (System.IO.DirectoryNotFoundException)
                {
                    Response.Write("<script language =Javascript> alert('Error!');</script>");
                }

                cargarDepartamentos();
                cargarAreasArtistcas();
                ddlArtClaseEntidadArtistica.Items.Insert(0, new ListItem("", "0"));
                //cargarClasesEntidades();
                ddlArtTipoEntidadArtistica.Items.Insert(0, new ListItem("", "0"));
                BindDatosEntidades();

                ASPxImageSliderEntidades.DataSource

            }
            else
            {
                if (EntidadesDataTableCache != null)
                {
                    GridEntidades.DataSource = EntidadesDataTableCache;
                    GridEntidades.DataBind();
                }
            }
        }
        #endregion

        #region cargarDepartamentos
        private void cargarDepartamentos()
        {

            Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();
            var datos = from a in contexto.BAS_ZONAS_GEOGRAFICAs
                        where object.Equals(a.ZON_PADRE_ID, null)
                        select a;
            if (datos == null) return;
            ddlDepartamentos.DataSource = datos;
            ddlDepartamentos.DataTextField = "ZON_NOMBRE";
            ddlDepartamentos.DataValueField = "ZON_ID";
            ddlDepartamentos.DataBind();
            ddlDepartamentos.Items.Insert(0, new ListItem("--Seleccione--", ""));
        }
        #endregion

        #region cargarAreasArtistcas
        private void cargarAreasArtistcas()
        {
            Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();
            var datos = from a in contexto.ART_AREA_ARTISTICAs
                        where object.Equals(a.ARD_ID, Convert.ToInt32(ConfigurationManager.AppSettings["AREA_ID"].ToString()))
                        select a;
            if (datos == null) return;
            ddlArtAreaArtistica.DataSource = datos;
            ddlArtAreaArtistica.DataTextField = "ARD_AREA_ARTISTICA";
            ddlArtAreaArtistica.DataValueField = "ARD_ID";
            ddlArtAreaArtistica.DataBind();
            ddlArtAreaArtistica.Items.Insert(0, new ListItem("--Seleccione--", ""));

        }
        #endregion

        #region ddlDepartamentos_SelectedIndexChanged
        protected void ddlDepartamentos_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlDepartamentos.SelectedValue == "")
            {
                ddlMunicipios.Items.Clear();
                return;
            }
            if (ddlDepartamentos.SelectedValue == "0")
            {
                ddlMunicipios.Items.Clear();
                return;
            }
            Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();
            var datos = from a in contexto.BAS_ZONAS_GEOGRAFICAs
                        where object.Equals(a.ZON_PADRE_ID, ddlDepartamentos.SelectedValue)
                        select a;
            if (datos == null) return;
            ddlMunicipios.DataSource = datos;
            ddlMunicipios.DataTextField = "ZON_NOMBRE";
            ddlMunicipios.DataValueField = "ZON_ID";
            ddlMunicipios.DataBind();
        }
        #endregion

        #region ddlArtAreaArtistica_SelectedIndexChanged
        protected void ddlArtAreaArtistica_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlArtAreaArtistica.SelectedValue == "")
            {
                ddlArtTipoEntidadArtistica.Items.Clear();
                return;
            }
            if (ddlArtAreaArtistica.SelectedValue == "0")
            {
                ddlArtTipoEntidadArtistica.Items.Clear();
                return;
            }
            Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();
            var datos = from a in contexto.ART_TIPO_ENTIDAD_ARTISTICAs
                        where object.Equals(a.TEA_AREA_ID, ddlArtAreaArtistica.SelectedValue)
                        select a;
            if (datos == null) return;
            ddlArtTipoEntidadArtistica.DataSource = datos;
            ddlArtTipoEntidadArtistica.DataTextField = "TEA_DESCRIPCION";
            ddlArtTipoEntidadArtistica.DataValueField = "TEA_ID";
            ddlArtTipoEntidadArtistica.DataBind();
        }
        #endregion

        #region btnBuscarEntidades_Click
        protected void btnBuscarEntidades_Click(object sender, EventArgs e)
        {
            BindDatosEntidades();
        }
        #endregion

        #region BindDatosEntidades
        private void BindDatosEntidades()
        {
            try
            {
                Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();
                var datos = from a in contexto.ART_ENTIDADES_ARTEs
                            join b in contexto.ART_ENTIDAD_ACTIVIDADs on a.ENT_ID equals b.ENT_ID
                            join c in contexto.ART_ENTIDAD_UBICACIONs on a.ENT_ID equals c.ENT_ID
                            join d in contexto.BAS_ZONAS_GEOGRAFICAs on c.ZON_ID equals d.ZON_ID
                            join e in contexto.ART_TIPO_ENTIDAD_ARTISTICAs on b.TEA_ID equals e.TEA_ID
                            join f in contexto.ART_CLASE_ENTIDAD_ARTISTICAs on b.ACE_ID equals f.ACE_ID
                            where
                                e.TEA_AREA_ID == Convert.ToInt32(ConfigurationManager.AppSettings["AREA_ID"].ToString()) &&
                                (ddlMunicipios.SelectedValue != "" ? c.ZON_ID == ddlMunicipios.SelectedValue : c.ZON_ID == c.ZON_ID) &&
                                (txtNombreEntidad.Text != "" ? a.ENT_NOMBRE.Contains(txtNombreEntidad.Text) : a.ENT_NOMBRE == a.ENT_NOMBRE) &&
                                (ddlArtTipoEntidadArtistica.SelectedValue != "0" ? e.TEA_ID == Convert.ToInt32(ddlArtTipoEntidadArtistica.SelectedValue) : e.TEA_ID == e.TEA_ID) &&
                                (ddlArtClaseEntidadArtistica.SelectedValue != "0" ? f.ACE_ID == Convert.ToInt32(ddlArtClaseEntidadArtistica.SelectedValue) : f.ACE_ID == f.ACE_ID)

                            select new
                            {
                                a.ENT_ID,
                                a.ENT_NOMBRE,
                                c.ENT_DIRECCION,
                                MUNICIPIO = d.ZON_NOMBRE,
                                DEPARTAMENTO = d.ZON_NOMBRE,
                                DESCRIPCION = "",
                                e.TEA_DESCRIPCION,
                                f.ACE_NOMBRE
                            };
                if (datos == null) return;
                GridEntidades.BeginUpdate();
                GridEntidades.DataSource = datos;
                GridEntidades.DataBind();
                GridEntidades.EndUpdate();
                EntidadesDataTableCache = GetDataView(GridEntidades);
            }
            catch (Exception ex)
            {
                ex.Message.ToString();
            }
        }
        #endregion

        #region GetDataView
        private DataTable GetDataView(ASPxGridView grid)
        {
            DataTable dt = new DataTable();
            foreach (GridViewColumn col in grid.VisibleColumns)
            {
                GridViewDataColumn dataColumn = col as GridViewDataColumn;
                if (dataColumn == null) continue;
                dt.Columns.Add(dataColumn.FieldName);
            }
            for (int i = 0; i < grid.VisibleRowCount; i++)
            {
                DataRow row = dt.Rows.Add();
                foreach (DataColumn col in dt.Columns)
                    row[col.ColumnName] = grid.GetRowValues(i, col.ColumnName);
            }
            return dt;
        }
        #endregion

        #region callbackPanel_Callback
        protected void callbackPanel_Callback(object source, DevExpress.Web.ASPxClasses.CallbackEventArgsBase e)
        {
            //edBinaryImage.Value = FindImage(e.Parameter);
            Detalles(e.Parameter);
        }
        #endregion

        #region Detalles
        private void Detalles(string id)
        {

            try
            {

                litText.Text = "";
                litDireccion.Text = "";
                litTelefono.Text = "";
                litCorreo.Text = "";
                litDescripcion.Text = "";
                litPaginaWEB.Text = "";
                litactividadesactualizacion.Text = "";
                litanostrayectoria.Text = "";
                litcondlaboralesformadores.Text = "";
                litfinanciacion.Text = "";
                hplkEND_FORMADORES_ARCHIVO.Text = "";

                lblHorasSemana.Text = "";
                litinfraestructura.Text = "";
                litlogrosescuela.Text = "";
                lblMesesAno.Text = "";
                lblPeriodosDescanso.Text = "";

                hplkEND_PROGRAMA_ARCHIVO.Text = "";

                hplkFORMADORES_ARCHIVO.Text = "";

                Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();
                var datos = from a in contexto.ART_ENTIDADES_ARTEs
                            join b in contexto.ART_ENTIDAD_ACTIVIDADs on a.ENT_ID equals b.ENT_ID
                            join c in contexto.ART_ENTIDAD_UBICACIONs on a.ENT_ID equals c.ENT_ID
                            join d in contexto.BAS_ZONAS_GEOGRAFICAs on c.ZON_ID equals d.ZON_ID
                            join e in contexto.ART_TIPO_ENTIDAD_ARTISTICAs on b.TEA_ID equals e.TEA_ID
                            join f in contexto.ART_CLASE_ENTIDAD_ARTISTICAs on b.ACE_ID equals f.ACE_ID
                       

                            from g in
                                (from g in contexto.ART_ENTIDADES_DANZAs where g.ENT_ID == a.ENT_ID select g).DefaultIfEmpty()

                            where
                                a.ENT_ID == Convert.ToInt32(id)
                            select new
                            {
                                a.ENT_ID,
                                a.ENT_NOMBRE,
                                a.ENT_PAGINA_WEB,
                                c.ENT_DIRECCION,
                                c.ENT_CORREO_ELECTRONICO_ENTIDAD,
                                c.ENT_TELEFONO,
                                a.ENT_RESENA,
                                MUNICIPIO = d.ZON_NOMBRE,
                                DEPARTAMENTO = d.ZON_NOMBRE,
                                DESCRIPCION = "",
                                e.TEA_DESCRIPCION,
                                f.ACE_NOMBRE,
                                g.END_ACTIVIDADES_ACTUALIZACIONES,
                                g.END_ANOS_TRAYECTORIA,
                                g.END_CONDICIONES_LABORALES_FORMADORES,
                                g.END_FINANCIACION,
                                g.END_FORMADORES_ARCHIVO,
                                g.END_HORAS_SEMANA,
                                g.END_INFRAESTRUCTURA,
                                g.END_INSTITUCIONALIDAD_ARCHIVO,
                                g.END_LOGROS_ESCUELA,
                                g.END_MESES_ANO,
                                g.END_PERIODOS_DESCANSO,
                                g.END_PROGRAMA_ARCHIVO
                            };

                if (datos != null)
                {
                    //existen proponentes y proyectos
                    //verifica el si es propietario del registro
                    foreach (var v in datos)
                    {
                        ///////////////////////////////////
                        //   CARGAR DETALLE ENTIDAD      //
                        ///////////////////////////////////
                        litText.Text = v.ENT_NOMBRE;
                        litDireccion.Text = v.ENT_DIRECCION;
                        litTelefono.Text = v.ENT_TELEFONO;
                        litCorreo.Text = v.ENT_CORREO_ELECTRONICO_ENTIDAD;
                        litDescripcion.Text = v.ENT_RESENA;
                        litPaginaWEB.Text = v.ENT_PAGINA_WEB;
                        litactividadesactualizacion .Text =  v.END_ACTIVIDADES_ACTUALIZACIONES;
                        litanostrayectoria.Text = v.END_ANOS_TRAYECTORIA.ToString();
                        litcondlaboralesformadores.Text =   v.END_CONDICIONES_LABORALES_FORMADORES;
                        litfinanciacion.Text = v.END_FINANCIACION;
                        hplkEND_FORMADORES_ARCHIVO.NavigateUrl = "../archivos/" + v.END_INSTITUCIONALIDAD_ARCHIVO.ToString();
                        hplkEND_FORMADORES_ARCHIVO.Text = "Archivo";
                        
                        lblHorasSemana.Text = v.END_HORAS_SEMANA.ToString();
                        litinfraestructura.Text = v.END_INFRAESTRUCTURA;
                        litlogrosescuela.Text = v.END_LOGROS_ESCUELA;
                        lblMesesAno.Text = v.END_MESES_ANO.ToString();
                        lblPeriodosDescanso.Text = v.END_PERIODOS_DESCANSO.ToString();
                        hplkEND_PROGRAMA_ARCHIVO.NavigateUrl = "../archivos/" + v.END_PROGRAMA_ARCHIVO;
                        hplkEND_PROGRAMA_ARCHIVO.Text = "Archivo";

                        hplkFORMADORES_ARCHIVO.NavigateUrl = "../archivos/" + v.END_FORMADORES_ARCHIVO;
                        hplkFORMADORES_ARCHIVO.Text = "Archivo";

                    }

                }

            }
            catch (Exception ex)
            {
                ex.Message.ToString();
            }
        }
        #endregion

        #region ddlArtTipoEntidadArtistica_SelectedIndexChanged
        protected void ddlArtTipoEntidadArtistica_SelectedIndexChanged(object sender, EventArgs e)
        {
            cargarClasesEntidades();
        }
        #endregion

        #region cargarClasesEntidades
        private void cargarClasesEntidades()
        {
            Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();
            var datos = from a in contexto.ART_CLASE_ENTIDAD_ARTISTICAs
                        where object.Equals(a.TEA_ID, ddlArtTipoEntidadArtistica.SelectedValue)
                        select a;
            if (datos == null) return;
            ddlArtClaseEntidadArtistica.DataSource = datos;
            ddlArtClaseEntidadArtistica.DataTextField = "ACE_NOMBRE";
            ddlArtClaseEntidadArtistica.DataValueField = "ACE_ID";
            ddlArtClaseEntidadArtistica.DataBind();
            ddlArtClaseEntidadArtistica.Items.Insert(0, new ListItem("--Seleccione--", "0"));
        }
        #endregion

        #region GridEntidades_RowCommand
        protected void GridEntidades_RowCommand(object sender, ASPxGridViewRowCommandEventArgs e)
        {
            if (e.KeyValue.ToString() != "")
            {
                try
                {
                    Detalles(e.KeyValue.ToString());
                }
                catch (Exception ex)
                {
                    ex.Message.ToString();
                }
            }
        } 
        #endregion
    }
}

